/**
 * 
 */


(function(){
    var App = TM.App = TM.App || {};
})();


// dom をロード
TM.loadScript("app", "game-element", function(){
    
    /**
     * @lends   TM.App.Text.prototype
     */
    var Text = TM.App.Text = TM.createClass({
        
        superClass: TM.App.GameElement,
        
        /**
         * 塗りつぶしフラグ
         */
        fill: true,
        /**
         * ストロークフラグ
         */
        stroke: false,
        debugBox: false,
        
        /**
         * Text クラス
         * テキストを描画するクラス
         * 描画は定義してあるので draw の実装は不要.
         * @constructs
         * @class       Text クラス
         * @extends     TM.App.GameElement
         * @see <a href="./../../test/app/text-test.html">Test Program</a>.
         */
        init: function(text, size) {
            TM.App.GameElement.prototype.init.apply(this);
            
            this.text       = text || "HOGE";
            this.size       = size || 24;
            this.font       = "'Consolas', 'Monaco', 'ＭＳ ゴシック'";
            this.align      = "start";
            this.baseline   = "alphabetic";
        },
        
        /**
         * 描画
         */
        draw: function(graphics) {
            graphics.setText(this.fontStyle, this.align, this.baseline);
            if (this.fill) {
                graphics.fillText(this.text, 0, 0, this.width);
            }
            if (this.stroke) {
                graphics.strokeText(this.text, 0, 0, this.width);
            }
            
            if (this.debugBox) {
                graphics.strokeRect(0, 0, this.width, -this.size);
            }
        },
        
        _updateFont: function() {
            this.fontStyle = "{size}px {font}".format(this);
        }
        
    });
    
        
    /**
     * サイズ
     * @name        size
     * @fieldof     TM.App.Text.prototype
     */
    Text.prototype.accessor("size", {
        "get": function() { return this._size; },
        "set": function(v){ this._size = v; this._updateFont(); }
    });
    
        
    /**
     * フォント
     * @name        font
     * @fieldof     TM.App.Text.prototype
     */
    Text.prototype.accessor("font", {
        "get": function() { return this._font; },
        "set": function(v){ this._font = v; this._updateFont(); }
    });
    
});














